/*!-----------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * monaco-languages version: 0.9.0(e162b4ba29044167bc7181c42b3270fa8a467424)
 * Released under the MIT license
 * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
 *-----------------------------------------------------------------------------*/
define('vs/basic-languages/src/powershell', ['require', 'exports'], function(e, s) {
  'use strict';
  Object.defineProperty(s, '__esModule', { value: !0 }),
    (s.conf = {
      wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
      comments: { lineComment: '#', blockComment: ['<#', '#>'] },
      brackets: [['{', '}'], ['[', ']'], ['(', ')']],
      autoClosingPairs: [
        { open: '{', close: '}' },
        { open: '[', close: ']' },
        { open: '(', close: ')' },
        { open: '"', close: '"', notIn: ['string'] },
        { open: "'", close: "'", notIn: ['string', 'comment'] },
      ],
      surroundingPairs: [
        { open: '{', close: '}' },
        { open: '[', close: ']' },
        { open: '(', close: ')' },
        { open: '"', close: '"' },
        { open: "'", close: "'" },
      ],
    }),
    (s.language = {
      defaultToken: '',
      ignoreCase: !0,
      tokenPostfix: '.ps1',
      brackets: [
        { token: 'delimiter.curly', open: '{', close: '}' },
        { token: 'delimiter.square', open: '[', close: ']' },
        { token: 'delimiter.parenthesis', open: '(', close: ')' },
      ],
      keywords: [
        'begin',
        'break',
        'catch',
        'class',
        'continue',
        'data',
        'define',
        'do',
        'dynamicparam',
        'else',
        'elseif',
        'end',
        'exit',
        'filter',
        'finally',
        'for',
        'foreach',
        'from',
        'function',
        'if',
        'in',
        'param',
        'process',
        'return',
        'switch',
        'throw',
        'trap',
        'try',
        'until',
        'using',
        'var',
        'while',
        'workflow',
        'parallel',
        'sequence',
        'inlinescript',
        'configuration',
      ],
      helpKeywords: /SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,
      symbols: /[=><!~?&%|+\-*\/\^;\.,]+/,
      escapes: /`(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
      tokenizer: {
        root: [
          [/[a-zA-Z_][\w-]*/, { cases: { '@keywords': { token: 'keyword.$0' }, '@default': '' } }],
          [/[ \t\r\n]+/, ''],
          [/^:\w*/, 'metatag'],
          [
            /\$(\{((global|local|private|script|using):)?[\w]+\}|((global|local|private|script|using):)?[\w]+)/,
            'variable',
          ],
          [/<#/, 'comment', '@comment'],
          [/#.*$/, 'comment'],
          [/[{}()\[\]]/, '@brackets'],
          [/@symbols/, 'delimiter'],
          [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
          [/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
          [/\d+?/, 'number'],
          [/[;,.]/, 'delimiter'],
          [/\@"/, 'string', '@herestring."'],
          [/\@'/, 'string', "@herestring.'"],
          [
            /"/,
            { cases: { '@eos': 'string', '@default': { token: 'string', next: '@string."' } } },
          ],
          [
            /'/,
            { cases: { '@eos': 'string', '@default': { token: 'string', next: "@string.'" } } },
          ],
        ],
        string: [
          [
            /[^"'\$`]+/,
            { cases: { '@eos': { token: 'string', next: '@popall' }, '@default': 'string' } },
          ],
          [
            /@escapes/,
            {
              cases: {
                '@eos': { token: 'string.escape', next: '@popall' },
                '@default': 'string.escape',
              },
            },
          ],
          [
            /`./,
            {
              cases: {
                '@eos': { token: 'string.escape.invalid', next: '@popall' },
                '@default': 'string.escape.invalid',
              },
            },
          ],
          [
            /\$[\w]+$/,
            {
              cases: {
                '$S2=="': { token: 'variable', next: '@popall' },
                '@default': { token: 'string', next: '@popall' },
              },
            },
          ],
          [/\$[\w]+/, { cases: { '$S2=="': 'variable', '@default': 'string' } }],
          [
            /["']/,
            {
              cases: {
                '$#==$S2': { token: 'string', next: '@pop' },
                '@default': {
                  cases: { '@eos': { token: 'string', next: '@popall' }, '@default': 'string' },
                },
              },
            },
          ],
        ],
        herestring: [
          [
            /^\s*(["'])@/,
            { cases: { '$1==$S2': { token: 'string', next: '@pop' }, '@default': 'string' } },
          ],
          [/[^\$`]+/, 'string'],
          [/@escapes/, 'string.escape'],
          [/`./, 'string.escape.invalid'],
          [/\$[\w]+/, { cases: { '$S2=="': 'variable', '@default': 'string' } }],
        ],
        comment: [
          [/[^#\.]+/, 'comment'],
          [/#>/, 'comment', '@pop'],
          [/(\.)(@helpKeywords)(?!\w)/, { token: 'comment.keyword.$2' }],
          [/[\.#]/, 'comment'],
        ],
      },
    });
});
